2e47ac
@@ -928,8 +928,13 @@
private ConnectionLockIdPair enqueueLockWithRetry(LockRequest rqst) throws NoSuc
         List<String> rows = new ArrayList<>();
         long intLockId = 0;
         for (LockComponent lc : rqst.getComponent()) {
-          if(lc.isSetOperationType() && lc.getOperationType() == DataOperationType.UNSET) {
-            //old version of thrift client should have (lc.isSetOperationType() == false)
+          if(lc.isSetOperationType() && lc.getOperationType() == DataOperationType.UNSET &&
+            (conf.getBoolVar(HiveConf.ConfVars.HIVE_IN_TEST) || conf.getBoolVar(HiveConf.ConfVars.HIVE_IN_TEZ_TEST))) {
+            //old version of thrift client should have (lc.isSetOperationType() == false) but they do not
+            //If you add a default value to a variable, isSet() for that variable is true regardless of the where the
+            //message was created (for object variables.  It works correctly for boolean vars, e.g. LockComponent.isAcid).
+            //in test mode, upgrades are not tested, so client version and server version of thrift always matches so
+            //we see UNSET here it means something didn't set the appropriate value.
             throw new IllegalStateException("Bug: operationType=" + lc.getOperationType() + " for component "
               + lc + " agentInfo=" + rqst.getAgentInfo());
           }
